package com.atguigu.chaptar7

object $06_MatchList {
  def main(args: Array[String]): Unit = {
    val list = List(1, 4, 7)
    //第一种方式
    list match {
      case List(x) =>println("List只有一个元素")
      case List(x:Int,_*)=>println("List至少有一个元素,且类型为Int")
      case List(x,y,z)=>println("List有三个元素")
      case List(x,_*)=>println("List至少有一个元素")
      case _ =>println("其他...")
    }
    //第二种方式
    list match{
      case x::Nil =>println("List只有一个元素")
      case (x:Int)::y::tail=>println("List至少有两个元素,且第一个类型为Int")//tail随便写
      case x::y::tail=>println("List至少有两个元素")
      case x::y::z::Nil=>println("List有三个元素")
    }
    //泛型的特性:泛型擦除
    //普通的泛型只是在代码编写的时候规范数据类型的,在编译执行的时候会擦掉
    //数组底层会解析成java数组,所以匹配类型不一样就报错
    // 而List因为泛型擦除什么类型都能匹配上了
    list match{
      case x:List[String]=>println("List[String]") //居然匹配上了List[String]
      case x:List[Any]=>println("List[Any]")
      case x:List[Int]=>println("List[Int]")
    }

  }

}
